home *** CD-ROM | disk | FTP | other *** search
- program RGB;
- {----------------------------------------------------------\
- | This program illustrates how to use the SetRGBPalette |
- | command from the Turbo Pascal 5.0 Graph unit to create |
- | 16 shades of gray on a VGA graphics card. |
- | |
- | Author : John Sieraski (Borland technical support) |
- | Last update: 12/21/88 |
- | Ware-ness : Released to the public domain by the author |
- \----------------------------------------------------------}
- uses
- Crt, Graph;
-
- function Int2Str(L : LongInt) : string;
- { Converts an integer to a string for use with OutText, OutTextXY }
- var
- S : string;
- begin
- Str(L, S);
- Int2Str := S;
- end; { Int2Str }
-
- procedure Wait;
- { Wait for key, then flush the buffer }
- var
- Ch : char;
- begin
- Ch := ReadKey;
- while KeyPressed do
- Ch := ReadKey;
- end; { Wait }
-
- var
- Driver, Mode, ErrorCode, BarHeight, Y : integer;
- PalIndex : byte;
-
- begin
- Driver := VGA; { Initialize VGA 640x480 graphics mode }
- Mode := VGAHi;
- InitGraph(Driver, Mode, ''); { Assumes EGAVGA.BGI in default dir }
- ErrorCode := GraphResult;
- if ErrorCode <> grOK then
- begin
- Writeln('Error: ', GraphErrorMsg(ErrorCode));
- Wait; Halt;
- end;
-
- for PalIndex := 0 to 15 do { Set raw colors in palette so that }
- SetPalette(PalIndex, PalIndex); { they're in sequence from 0..15 }
-
-
- for PalIndex := 0 to 15 do { Create gray scale in DACs 0..15 }
- SetRGBPalette(PalIndex, PalIndex*4, PalIndex*4, PalIndex*4);
-
- BarHeight := GetMaxY div 16; { Display the gray scale }
- Y := 0;
- SetColor(GetMaxColor); { Color for 1st 8 OutText calls in loop }
- for PalIndex := 0 to 15 do
- begin
- SetFillStyle(SolidFill, PalIndex);
- Bar(0, Y, GetMaxX, Y+BarHeight);
- if PalIndex = 8 then
- SetColor(0); { Color for last 8 OutText calls }
- OutTextXY(10, Y+(BarHeight div 2), Int2Str(PalIndex));
- Inc(Y, BarHeight);
- end;
-
- Wait; CloseGraph;
- end.
-